#!/usr/bin/awk -f
#-------------------------------------------------------
#	FileName	: hb_pro.awk
#	Author		：hpy
#	Date		：2021年08月10日
#	Description	：按第一列为ID，ID相同，则没行数据按列合并，可设置
#                 每列合并的操作方式可以设置
#    主要针对 使用分隔符的csv文件!!!
#-------------------------------------------------------


# 在BEGIN块配置参数
BEGIN {
    # FS="|"   #指定输入数据分隔符 , 若屏蔽则默认 制表符和空格分割
    OFS="|"    #输出数据的列分隔符
    ID=3       #主键 ID 的列 ，可设置 ，设置第几列为主键
    LEN=0      #合并后的数据行数
}

{
    #设置文件前几行不处理,直接修正分隔符后输出
    if(NR<=1) { 
        for(jj=1;jj<NF ; jj++)printf("%s%s",$jj,OFS)  #保证生成文件的分隔符统一
        print $NF
        next 
    }

    #ID优先操作
    SIZE = a[$ID,ID] ? SIZE : SIZE + 1   #统计合并后的数据行数
    a[$ID,ID] = $ID  ; b[$ID]     # 生成ID

    #设置每列的合并方式
    for(i=1;i<=NF;i++){
        if( i == ID) continue  #用于跳过ID列处理

        if( i== 1) a[$ID,i]=a[$ID,i] ? a[$ID,i]","$i : $i;  #处理第1列  ,连接数据
        else if( i== 2) a[$ID,i]= a[$ID,i] ? a[$ID,i]","$i : $i ;  #处理第2列 ,连接数据
        else if( i== 3) a[$ID,i]= a[$ID,i] ? a[$ID,i]+$i : $i     ;  #处理第3列  加法操作
    }

}
END{
    for(j in b){
        for(k=1;k<NF;k++) {
            printf("%s%s",a[j,k],OFS);
        }
        print a[j,k]  #最后一个主要显示换行
    }
}